1. Field of the Invention
The present disclosure relates generally to information technology systems, and, in particular, to efficient management of service functions and services for providing responsive systems.
2. Description of the Related Art
As information technology (IT) has advanced over the past fifty years, practitioners have assembled ever more complex collections of function into comprehensive IT solutions. One example of this trend includes an integrated customer management system that includes potential customer identification, sales, product delivery, warranty services, follow-on sales and an assortment of related information. Traditionally individual systems owned by individual parts of the extended organization addressed the needs for each of these aspects separately. Unfortunately, relying on fragmented and separate IT solutions does not provide users with many advantages that should be available with a robust system.
A number of challenges to effective integration of the fragmented and diverse systems exist. For example, it is difficult to separate out those functions and capabilities that are common across the extended organization and provide related and meaningful functions for all users across an extended organization. Some terms of art are provided to lend insight into the challenges for design and implementation of a comprehensive IT solution.
“Granularity” refers to an amount of computation in relation to communication, (i.e., a ratio of computation to the amount of communication). A “finely grained” task is relatively small in terms of code size and execution time. Associated data are frequently transferred among processors in small packages, such as a single or only a few words. A “coarsely grained” task is the opposite: data are communicated infrequently, after larger amounts of computation.
As used herein, the term “granular” is with regard to processing of complex information entities called information granules. The granules arise in the process of data abstraction and derivation of knowledge from information. Generally, information granules are collections of entities that usually originate at the numeric level and are arranged together due to their similarity, functional adjacency, coherency, or the like. Accordingly, granular computing is discussed with regard to theories, methodologies, techniques, and tools that make use of information granules in the process of problem solving.
Stated another way, granular computing provides for delineation and consideration of those things that serve a specific interest as well as switching those things. By focusing on different levels of granularity, one can obtain different levels of knowledge, as well as a greater understanding of inherent knowledge structure. Solving the challenges associated with managing granular systems is essential for design and implementation of intelligent systems.
As evidenced by the high failure rate for large IT initiatives, the process of designing services that can satisfy a collection of broad and evolving requirements strains the technology for large IT systems.
One key aspect of improving the success rate for building comprehensive services that successfully satisfy the needs of a broad audience is to define the services to be of the right granularity and scope. If the services offered are too fine-grained (i.e., specific) then many service consumers end up revising functional code in order to serve the related business function. If the services are too coarse-grained, then service consumers may not be able to get the required information, or they may need to call a complex and expensive service and throw away all but a small fraction of the results. This leads to high levels of run-time inefficiency. On the other hand, if the provider offers varieties of both fine-grained and coarse-grained services, the cost of maintaining the services themselves and the complexity of understanding how to manage the services will balloon to unacceptable levels.
A review of the development of comprehensive IT services is now provided. This review considers the various ways in which system designers have attempted to handle the challenges of granular computing.
An early application-oriented approach for using services was similar to an application programming interface (API). Typically, APIs were considered to be fine-grained; each function (or method) call being a detail-oriented, technical construct used by programmers. Many early services implementations performed direct one-to-one translations of existing APIs into service methods interfaces. Not only did this approach generate large amounts of network traffic, but it also required developers to program extensive business logic into the calling system.
Later, it became a best practice for experts to recommend that service functions should be coarse grained. This relied upon a premise that services were a resource that would be deployed across the Internet via a slow and unreliable connection. Using a small number of coarse-grained messages would reduce the number of transmissions and increase the likelihood that a message would arrive and a transaction would be completed while the connection was still available.
Some architects, have recommended using varying granularities. For example, service methods for work inside an enterprise having a finer granularity than methods for external interface. Using this approach, the fine-grained functions interface offer more flexibility to the requester application. However, this also means that a service provider will need to satisfy more patterns of interaction with different service requesters and that this can make services support more difficult for the service provider.
One approach has recognized that the granularity of a service is a relative characteristic. What is fine-grained for one application is coarse grained for another. Even though a definition of service granularity is derived using several criteria (such as the scope of a service, and the ability of a service to be useful in higher level services) no formal methodology or definition is provided for deciding on service granularity.
Another approach concludes that there is no rule that external services should all be coarse grained while internal services should all be fine-grained, but that each service should be “right grained” for its specific task, without consideration for the speed of connection. This approach considers that there is no rule that services should all be coarse grained, or fine-grained. The ideal is that they should be right grained for the specific usage scenario. While this is a clear statement of the problem—little is offered to provide guidance as to the right solution.
The forgoing discussion shows that there is an ongoing problem of choosing an appropriate service granularity. Stated more succinctly, service-owners/architects (or even an automated service design process) do not have a robust technique for taking a defined range of capabilities and offering the capabilities as a collection of services.
Currently, when services are designed, twenty to forty percent of the development lifecycle is dedicated to design service functions and services. This is because designing services is an iterative process during which the architects and designers model the service functions and services, discuss them with end users and developers, receive feedback, refine the service functions and finally assemble them into services.
While users want highly customized services, management wants to minimize the number of service functions developed in order to reduce project costs. The optimal solution is likely to be somewhere in between, where the solution provides enough service functions to satisfy customers on one hand, and keeps the development costs within budget on the other. The automation of creating an optimal set of service functions will significantly reduce the cost of system development.
In a system that has already gone into operation, automation may include the creation of new service functions, when needed, while preserving or pruning existing functions.
Reducing discussion time between customers, architects and developers during the services development process, as automation does, will lead to savings that can be passed down to users in order to attract price-sensitive customers. At the same time, preserving existing service functions will provide for retention of existing customers.
What are needed are techniques for managing IT services having a diverse granularity, wherein the techniques provide for a range of capabilities and offering of the capabilities as a collection of services.